/*
 * @Author: szx
 * @Date: 2021-12-05 13:25:53
 * @LastEditTime: 2021-12-05 13:45:47
 * @Description:
 * @FilePath: \leetcode\1-99\50\50.js
 */
/**
 * @param {number} x
 * @param {number} n
 * @return {number}
 */

//快速幂+递归
// var myPow = function (x, n) {
//     function quickMul(x, N) {
//         if (N == 0) {
//             return 1.0;
//         }
//         const y = quickMul(x, Math.floor(N / 2));
//         return N % 2 == 0 ? y * y : y * y * x;
//     }
//     return n >= 0 ? quickMul(x, n) : 1.0 / quickMul(x, -n);
// };

//快速幂+迭代
var myPow = function (x, n) {
    function quickMul(x, N) {
        let res = 1;
        while (N > 0) {
            if (N % 2 == 1) {
                res *= x;
            }
            x *= x;
            N = Math.floor(N / 2);
        }
        return res;
    }
    return n >= 0 ? quickMul(x, n) : 1.0 / quickMul(x, -n);
};
console.log(myPow(2, 3));
